package com.leetcode;

import com.leetcode.common.TreeNode;

import java.util.*;

/**
 * 199. 二叉树的右视图
 * DFS 通过递归深度优先遍历右子树
 *
 * @author fy
 * @date 2022/3/29 20:08
 */
public class Solution199 {

    private List<Integer> res = new ArrayList<>();

    public List<Integer> rightSideView(TreeNode root) {
        res.clear();
        if (root == null) {
            return res;
        }
        dfs(root, 0);
        return res;
    }

    private void dfs(TreeNode node, int depth) {
        if (node == null) {
            return;
        }
        // 如果是该层访问的第一个节点, 则加入
        if (depth == res.size()) {
            res.add(node.val);
        }
        // 先访问右子树, 再访问左子树
        dfs(node.right, depth + 1);
        dfs(node.left, depth + 1);
    }

}
